package com.xpqh.ksg.common.utils;

import com.alibaba.druid.support.json.JSONUtils;
import com.xpqh.ksg.common.enums.result.BizExceptionEnum;
import com.xpqh.ksg.common.enums.result.BizSuccessEnum;
import common.utils.DateUtil;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
 * response响应消息封装工具
 * @author 36115
 */
public class ResultUtil {

	/**
	 * 返回json字符串
	 *
	 * @param data
	 *            数据体
	 * @param status
	 *            状态码
	 * @param message
	 *            状态描述
	 * @return
	 */
	public static String toJSON(Object data, String status, String message) {
		Map<String, Object> resultMap = new HashMap<String, Object>();
		resultMap.put("data", data);
		resultMap.put("status", status);
		resultMap.put("message", message);
		resultMap.put("dataTime", DateUtil.toCNDateTime(new Date()));
		return JSONUtils.toJSONString(resultMap);
	}

	/**
	 * 返回json字符串
	 * 
	 * @param data
	 *            数据体
	 * @param status
	 *            状态码
	 * @param message
	 *            状态描述
	 * @return
	 */
	public static Map<String, Object> toMap(Object data, Integer status, String message) {
		Map<String, Object> resultMap = new HashMap<String, Object>();
		resultMap.put("data", data);
		resultMap.put("status", status);
		resultMap.put("message", message);
		resultMap.put("timeStamp",DateUtil.toCNDateTime(new Date()));
		return resultMap;
	}
	/**
	 * 返回json字符串
	 * @param data
	 * @param result 结果集枚举
	 * @return
	 */
	public static String toJSON(Object data, Result result){
		return toJSON(data, result.key, result.value);
	}

	/**
	 * 返回json字符串
	 * @param result 结果集枚举
	 * @return
	 */
	public static String toJSON(Result result){
		return toJSON(null, result.key, result.value);
	}
	/**
	 * 处理成功，data固定为空，提示内容信息固定
	 * @return String
	 */
	public static Map<String, Object> OK() {
		return toMap(null, BizSuccessEnum.OK.getCode(), BizSuccessEnum.OK.getMessage());
	}
	
	/**
	 * 处理成功，data固定为空，自定义提示内容信息
	 * @param bizSuccessEnum
	 * @return Map<String, Object>
	 */
	public static Map<String, Object> OK(BizSuccessEnum bizSuccessEnum){
		return toMap(null, bizSuccessEnum.getCode(), bizSuccessEnum.getMessage());
	}
	
	/**
	 * 处理成功，自定义data内容，提示内容信息固定
	 * @return Map<String, Object>
	 */
	public static Map<String, Object> OK(Object data) {
		return toMap(data, BizSuccessEnum.OK.getCode(), BizSuccessEnum.OK.getMessage());
	}

	/**
	 * 处理成功，自定义data内容和自定义提示内容
	 * @param bizSuccessEnum
	 * @return Map<String, Object>
	 */
	public static Map<String, Object> OK(Object data,BizSuccessEnum bizSuccessEnum){
		return toMap(data, bizSuccessEnum.getCode(), bizSuccessEnum.getMessage());
	}
	
	/**
	 * 处理失败，data内容固定为空，自定义提示内容
	 * @param bizExceptionEnum
	 * @return Map<String, Object>
	 */
	public static Map<String, Object> ERROR(BizExceptionEnum bizExceptionEnum) {
		return toMap(null, bizExceptionEnum.getCode(), bizExceptionEnum.getMessage());
	}
	
	/**
	 * 处理失败，自定义data内容和自定义提示内容
	 * @param data
	 * @param bizExceptionEnum
	 * @return Map<String, Object>
	 */
	public static Map<String, Object> ERROR(Object data, BizExceptionEnum bizExceptionEnum) {
		return toMap(data, bizExceptionEnum.getCode(), bizExceptionEnum.getMessage());
	}

}
